package com.zxjbyte.yiyi.module.plugin.sse.api;

/**
 * @Author zhangxingjia
 * @Date 2024/7/14 18:41
 * @Version: 1.0
 */
public interface SseEmitterApi {

    /**
     * 指定客户端id和用户id 发送单个消息
     * @param clientId
     * @param userId
     * @param message
     * @return
     */
    boolean sendOneMessage(String clientId, String userId, String message);

    default boolean sendOneMessage(String userId, String message){
        return sendOneMessage(null, userId, message);
    }


    /**
     * 广播消息
     * @param clientId
     * @param message
     */
    void broadcastMessage(String clientId, String message);

    default void broadcastMessage(String message){
        broadcastMessage(null, message);
    }

    /**
     * 广播在线用户数
     * @param clientId
     */
    void broadcastOnlineUsers(String clientId);

    default void broadcastOnlineUsers(){
        broadcastOnlineUsers(null);
    }

    /**
     * 获取在线用户数
     * @param clientId
     * @return
     */
    Integer getOnlineUserCount(String clientId);

    default Integer getOnlineUserCount(){
        return getOnlineUserCount(null);
    }
}
